iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 17
0
自我挑戰組

學習 Android Kotlin 隨筆系列 第 17

[ Day 17 ] Kotlin 基本功(二)程式語法練習

  • 分享至 

  • xImage
  •  

前言

上篇介紹了基本的變數以及迴圈,這篇打算來介紹更進階的用法唷!

Nullable

Kotlin 需要去嚴謹的定義一個變數,是否可以是空的。什麼時候必定要有值,何時應要為 nullable,也是在撰寫 Android 的一個需要思考的部分。

如下面的程式碼來看,這邊定義 x 可以為 nullable,表示當 x 是 null 的時候,不會使得程式 crush。

var x: String?

之前在 recyclerView 有使用過一個例子,如下

class Holder{
    @Parcelize
    data class Datas(val imgURL: Uri?, val text: String): Parcelable
}

可以看到 data class 裡面的 Uri 是為 nullable,原因是因為我的 view holder 會同時放入圖片以及文字,或者只有純文字。當我今天傳給 adapter 的是一個 imgURL 為 null 的資料時,表示該 item 只要顯示文字就好。

陣列

  • mutableListOf

    • 該陣列可以隨意的新增或刪除元素
    val list = mutableListOf(1, 2, 3)
    list += 4
    

    在這邊可以看到,即使使用了 val ,但因為 list 本身是可以任意新增或刪除的(mutable),所以能夠在上述程式碼加入一個元素。
    基本上,在現在 Kotlin 來說,他跟 ArrayList 是一樣的,在未來 Kotlin 有可能會對 mutableListOf 進行修改,更改回傳的 type,到時才可能會有差異出現

  • listOf

    • 就是 immutable list 的意思,在一開始宣告之後,就無法再隨意新增或者刪除元素。
  • nullable

    可以觀察以下的 code,都有些微差異,但是後面的意義都不同。

    var mList = ArrayList<String>()
    var mList = ArrayList<String?>()
    var mList = ArrayList<String>()?
    var mList = ArrayList<String?>()?
    

    在 ArrayList 裡面,因為本身需要宣告一個型別,而內部裝的東西也是另外一個型別,造就了上面 4 種的搭配方法。
    第一種是不可以為 mList 不可以為 null,裡面裝的String也不可以為 null,最後一種則是反之。


上一篇
[ Day 16 ] Kotlin 基本功(一)程式語法練習
下一篇
[ Day 18 ] Kotlin 基本功(三)程式語法練習
系列文
學習 Android Kotlin 隨筆30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言